The present invention relates to a communication interface, and more particularly, the present invention relates to a communication interface between hardware and software.
There are known benefits to implementing particular constructs in hardware and particular constructs in software, such as that the speed of execution using one implementation may be faster than if using the other. Programs that are implemented for a particular hardware device, such as a graphics processor, are often partitioned to partially execute on a computer's microprocessor. The detail of this partition is often decided and encoded directly into the program. That is, guesses must be made with regard to whether a particular partition of constructs between hardware and software is an optimal partition. The consequences of incorrect guesswork involves inefficient execution and inefficient use of resources.
With regard to communication between hardware and software, various bus protocols exist. For example, peripheral component interface (PCI), industry standard architecture (ISA), small computer system interface (SCSI), as well as others allow peripheral hardware devices and a personal computer's microprocessor to communicate. In each of these cases, however, a separate, specialized bus-based protocol must be used.
In addition, many conventional systems rely on shared memory to link hardware devices and software devices, but this approach is limited in its nature and does not offer portability in terms of compatibility.
It would therefore be desirable provide a way in which a program is implemented efficiently in hardware and software based on profiling results.
It would further be desirable to provide a portable and efficient communication interface between hardware and software devices.